www.gusucode.com > VC++ 图片浏览器的设计与实现+设计文档源码程序 > VC++ 图片浏览器的设计与实现+设计文档源码程序/code/PictView/删除图片.txt

    删除文件
CString FromStr;
	FromStr = pDoc->m_PicList[pDoc->m_iCurrFileNum];
	FromStr+='\0';
	SHFILEOPSTRUCT FileOp; 
	FileOp.hwnd = NULL; 
	FileOp.wFunc = FO_DELETE; 
	FileOp.pFrom = FromStr;//FromBuff; 
	FileOp.pTo = NULL; 
	FileOp.fFlags = FOF_ALLOWUNDO | FOF_NOERRORUI;
	FileOp.fAnyOperationsAborted = TRUE;
	FileOp.hNameMappings = NULL;
	FileOp.lpszProgressTitle = _T("正在删除文件……");
	::SHFileOperation( &FileOp );

	ReInitpicList();
	pDoc->m_bSmall = TRUE;  
	pDoc->m_iLarge = 1; 
	if(pDoc->m_iCurrFileNum == 0)
	{
		if(FALSE == pDoc->LoadImage(pDoc->m_PicList[0]))
			return ;
	}
	else
	{
		if(FALSE == pDoc->LoadImage(pDoc->m_PicList[pDoc->m_iCurrFileNum - 1]))
			return ;
	}
	
	
查找文件
BOOL CThePicDoc::InitPicList(LPCTSTR pszFileName)
{ 
	BOOL bRet = FALSE;
	char drive[_MAX_DRIVE];   
	char dir[_MAX_DIR];
	char fname[_MAX_FNAME];   
	char ext[_MAX_EXT];
	_splitpath(pszFileName, drive, dir, fname, ext); 

	CString str;
	str.Format("%s%s",drive,dir);
	str = str + "*.*";

        CFileFind cFind;
	BOOL ans = cFind.FindFile(str);
	m_iFileNumber = 0;
	while(ans)
	{
		ans = cFind.FindNextFile();
		if(cFind.IsDirectory())
			continue;
		CString FilName = cFind.GetFileName();
		LPCTSTR pszExt = _tcsrchr(FilName,_T('.'));
		if((_tcsicmp(pszExt,".bmp") == 0)||(_tcsicmp(pszExt,".tga") == 0)||(_tcsicmp(pszExt,".pcx") == 0))
		{
			m_PicList[m_iFileNumber] = cFind.GetFileName();
			CString FilePath;
			FilePath.Format("%s%s",drive,dir);
			m_PicList[m_iFileNumber] =FilePath + m_PicList[m_iFileNumber] ;
			m_iFileNumber++;
		}
		
		
	}
	cFind.Close();

	return TRUE;
}
重建列表
void CThePicView::ReInitpicList()
{
	CThePicDoc* pDoc = GetDocument();
	//在删除的图片列表前的文件列表部分不变
	//在删除的图片列表后的部分列表前移
	for(int i = pDoc->m_iCurrFileNum + 1;i<pDoc->m_iFileNumber;i++)
	{
		pDoc->m_PicList[i - 1] = pDoc->m_PicList[i];
	}
	pDoc->m_iFileNumber--;
}